Fix crossing event generation
authorMatthias Clasen <mclasen@redhat.com>
Thu, 2 Apr 2020 04:39:46 +0000 (00:39 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Thu, 2 Apr 2020 04:39:46 +0000 (00:39 -0400)
We were not properly setting the new_descendent field
in Crossing structs for GTK_CROSSING_OUT events. This
was causing extraneous ::leave signals to be emitted,
and make model buttons in popover menus flicker when
hovered.

Fixes: https://gitlab.gnome.org/GNOME/gtk/-/issues/2536
gtk/gtkmain.c

index 0b99a0030fa82bb6651fd6065b9ad63d5c58fe57..d100e578dd040be6293addfd000d0b5f689f41f1 100644 (file)
@@ -1317,6 +1317,7 @@ gtk_synthesize_crossing_events (GtkRoot         *toplevel,
       gtk_widget_handle_crossing (widget, &crossing, x, y);
       if (crossing_type == GTK_CROSSING_POINTER)
         gtk_widget_unset_state_flags (widget, GTK_STATE_FLAG_PRELIGHT);
+      prev = widget;
       widget = gtk_widget_get_parent (widget);
     }